1. The Field of the Invention
This invention relates generally to computer graphics and systems for generating computer graphics on a display device. More specifically, the present invention relates to generating anti-aliased textured and layered fog in a geocentric environment to thereby render a more accurate image of the fog or similar phenomena in conjunction with the earth when viewing an image which is representative of flight at any altitude, but particularly at high altitudes.
2. The State of the Art
The state of the art in rendering fog has been primarily dictated by the restraints of the coordinate system in which terrain environments are rendered. More specifically, the earth is typically rendered in a virtual environment using a flat or Cartesian coordinate system because the curved nature of the earth is typically not noticeable at the scale at which most three dimensional virtual environments are rendered. However, an important exception is the case presented by flight simulation.
The benefits of training pilots by using flight simulators are numerous. However, training is less effective when the pilots are unable to use the same visual clues that are normally present for them in the real world. Accordingly, the desire to provide realistic three dimensional virtual environments has very practical applications, only one of which is described above.
The state of the art in three-dimensional rendering of a virtual flight environment has attempted to realistically render fog, where the term fog includes clouds of varying degrees of opacity. The most common fogging function available today in an image generator (IG) and a graphic accelerator is generally referred to as homogeneous fog. Homogeneous fog derives its name from the fact that fog density is uniform in every direction from an eye position throughout the virtual environment. The density of the fog between an object and the eye position is only a function of the range between them.
FIG. 1 of the prior art shows that layered fog (also called real fog) is a non-homogenous approach to generating the fogging function. The layered fog algorithm provides the ability to define different densities for each layer or altitude in the atmosphere. In this figure, three separate layers 10, 12 and 14 of fog are shown between an eye position 16 and an object 18 being observed. The visibility between the eye position 16 and the object 18 is not only a function of the range between them, but also the layers through which an eye vector (from the eye position 16 to the object 18) passes.
For every pixel that is to be rendered, an eye vector from the eye position 16 to a pixel must be generated. The fog contribution to the pixel must be calculated for each layer through which the eye vector passes on its path to the pixel, and all of these contributions must be blended into a final result.
One important visual clue to a pilot of the present altitude is that the horizon of the earth starts to depress a few degrees at high altitudes, due to the curvature of the earth. As stated previously, the rendering for nearly all IGs and graphic accelerators are in a Cartesian frame of reference, not spherical. To address the need for the correct display of a geocentric environment, polygons that are being processed (scaled, translated and rotated) in a Cartesian frame of reference have their altitudes (usually on the Z axis) depressed as a function of the curvature of the planet and the range from the eye position. This scenario generates believable rendering as long as there is no layered fog applied.
The state of the art in layered fog took advantage of the Cartesian environment by defining the layers along the Z axis of the environment. However, mixing previous layered fog implementations and a geocentric environment are not possible due to the layered fogs"" dependency on a xe2x80x9cflat earthxe2x80x9d or Cartesian frame of reference.
Accordingly, what is needed is a way to provide accurate visual altitude clues in a three dimensional and geocentric virtual environment with layered fog.
In conjunction with a lack of altitude clues, the state of the art also suffers from a lack of velocity clues. State of the art layered fog does little to provide visual cues for horizontal movement of the eye position or other objects in the virtual environment.
Accordingly, what is also needed is a way to provide accurate visual velocity clues in a three dimensional and geocentric virtual environment with layered fog.
Another fundamental problem that has plagued the state of the art layered fog systems is the aliasing that occurs between the pixels of a polygon that straddles the boundary between two or more fog layers which have significantly different fog layer densities. The result is that the center of a pixel will be determined to be within a layer with a high fog density while the center of the adjacent pixel will be determined to be within the next layer with a low fog density. The two resulting pixels will have significantly different pixel colors, and thus aliasing will occur. In other words, a jagged step ladder will be formed along the boundary between different fog layers, instead of a smooth or smudged appearance between them. The problem grows more pronounced as the pixels being rendered are at a great distance from the eye position (such as on the horizon), and when the pixels represent a significantly larger physical area. This occurs when a pixel becomes larger than the thickness of the fog layer.
Accordingly, what is also needed is a way to provide anti-aliasing in a three dimensional and geocentric virtual environment having layered fog.
It is useful to understand the shortcomings of the state of the art by looking at several patents which introduce important concepts, but fail to satisfy the issues above.
In U.S. Pat. No. 5,412,796, the patent issued to Olive teaches the concept of non-homogeneous fog. It is also noted that it is assumed that all fog layers are parallel in a Cartesian coordinate environment, thus failing to provide valuable altitude clues, among other things.
In U.S. Pat. No. 5,724,561, the patent issued to Tarolli et al. apparently teaches the concept of using blending to soften the boundaries between fog layers. Three registers are provided for storing color pixel data, a depth perspective component, and fog color data. This information is then blended using a blending unit and output by the system. This system differs substantially from the method and apparatus of the present invention as will be shown.
It is an object of the present invention to provide a method and apparatus for generating geocentric layered fog in a three-dimensional and geocentric virtual environment to thereby provide visual altitude clues.
It is another object of the present invention to provide a method and apparatus for generating textured layered fog in a three-dimensional virtual environment to thereby provide visual velocity clues.
It is another object of the present invention to provide a method and apparatus for generating anti-aliased layered fog in a three-dimensional virtual environment to thereby provide blended transitions between boundaries of fog layers of different densities.
It is another object to provide a method and apparatus for providing anti-aliased textured and geocentric layered fog in a three-dimensional and geocentric virtual environment to thereby simultaneous provide visual clues for altitude and velocity while rendering blended fog layer boundaries.
It is another object to provide apparatus for generating the anti-aliased textured and geocentric layered fog which includes computing layer model data and texture model data.
The present invention is a method and apparatus in a preferred embodiment for generating anti-aliased layered fog which is textured and manipulated as if in a geocentric virtual environment to thereby show horizon depression at high altitudes. Hardware is provided such that layer model data and texture model data is combined to generate fogged pixel color.
In a first aspect of the invention, anti-aliasing is accomplished by generating a plurality of sample points for each pixel, where the sample points are separated by approximately one screen pixel. The densities of each of the sample points are then blended to form an anti-aliased pixel density value for a rendered pixel. Some of the novel aspects include the process of anti-aliasing the layered fog, the process of obtaining the variables for the delta sample altitude, and the process of blending the sample densities together to form the final anti-aliased layered fog density value.
In another aspect of the invention, providing texture to the layered fog is accomplished by tracing an eye vector through all the fog layers, and then blending the effect of each of the layers into a final blend of the fog and pixel color. At each texture layer, the X and Y components of the eye vector are used as indices into a texture map. The blending of color and density modulation, and local and global texture effects are used to generate the appearance of a fog layer with finite thickness, not just a texture plane.
In another aspect of the invention, geocentric fog algorithms are utilized to modify the functioning of a primarily Cartesian layered fog algorithm. Without this function, noticeable visual anomalies appear.
These and other objects, features, advantages and alternative aspects of the present invention will become apparent to those skilled in the art from a consideration of the following detailed description taken in combination with the accompanying drawings.